// 1897. 【软件认证】促销活动/简单/map
// https://oj.rnd.huawei.com/problems/1897/details
// 华为商城举办了一个促销活动，某一秒内最早的订单（可能多个）可以获取免单。
// 现给定一批订单记录，请计算有多少个订单可以获取免单。
// 输入 第一行一个整数 size, 表示顾客下单数量，其值范围：[1, 50000)
// 随后为 size 行字符串，每行表示一个订单的下单时间，
// 格式为：YYYY-MM-DD hh:mm:ss.fff 其中 YYYY-MM-DD hh:mm:ss 
// 表示下单时间的 年-月-日 小时:分:秒，皆为合法范围。 
// fff 表示下单时间的毫秒值，值的范围为 [0, 999] 输出一个整数，
// 表示有多少个订单可以获取免单。 输入 3 
// 2019-01-01 00:00:00.001
// 2019-01-01 00:00:00.002
// 2019-01-01 00:00:00.003
// 输出 1
// 三个订单都是同一秒（年-月-日 小时:分:秒）内下单，毫秒时间第一个订单最早，可以免单。
// 输入 6 2019-01-01 00:00:00.001
// 2019-01-01 00:00:00.002 2019-01-01 00:00:00.003
// 2019-01-01 08:59:00.123 2019-01-01 08:59:00.123
// 2018-12-28 13:08:00.999
// 输出 4
// 前三个订单是同一秒（年-月-日 小时:分:秒都相同）内下单，
// 第一个订单的毫秒时间最早、可以免单；
// 第二、三个订单不是该秒内的最早时间、不可免单。
// 第四、五个订单是另外的同一秒内下单，且毫秒时间也完全相同，因此同为最早时间、都可以免单。
// 最后一个订单是该秒内唯一的一个订单，也是最早、可以免单。
// 因此共有 4 个订单可以免单。
// 输入 5
// 2019-01-01 00:00:00.004
// 2019-01-01 00:00:00.004
// 2019-01-01 00:00:01.006
// 2019-01-01 00:00:01.006
// 2019-01-01 00:00:01.005
// 输出 3
// 前两个订单是同一秒内同一时刻（也是最早）下单，第三第四个订单不是当前秒内最早下单，不可免单，第五个订单可以免单。

#include <bits/stdc++.h>
using namespace std;

// 1,2,3,4,4,5,5,6

int GetFreeCount(vector<string> orders) {
  map<string, map<int,int>> mpTime;
  for (auto s : orders) {
    int msec = atoi(s.substr(s.length()-3,3).c_str());
    mpTime[s.substr(0, s.length()-4)][msec]++;
  }
  int cnt = 0;
  for (auto m : mpTime)
    cnt += m.second.begin()->second;
  return cnt;
}

